package dibujo;

import java.awt.Color;
import java.awt.Graphics;

import org.uc3m.ed.interfaz_grafica.ventana.VentanaPrincipal;


public class NodoDibujoArray {
	
	/**
	 * 
	 */
	private Graphics _grafico;
	
	/**
	 * 
	 */
	private int _posicionX;
	
	/**
	 * 
	 */
	private int _posicionY;
	
	/**
	 * 
	 */
	private int _anchoNodo;
	
	/**
	 * 
	 */
	private int _altoNodo;
	
	/**
	 * 
	 */
	private String _dato;
	
	/**
	 * 
	 */
	private boolean _habilitado;
	
	/**
	 * 
	 */
	private int _posicion;
	
	/**
	 * @param grafico
	 * @param dato
	 * @param b
	 */
	public NodoDibujoArray(Graphics grafico, String dato) {
		_grafico=grafico;
		_anchoNodo=70;
		_altoNodo=40;
		_dato=dato;
		_habilitado=false;
	}

	/**
	 * 
	 */
	public void crearNodo()
	{
		try{
			crearCaja();
			crearDato();
			dibujarPosicion();
		}catch(Exception e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::NodoDibujoArray ERROR::1\n   Se ha produciodo una Excepcion: "+e.toString());
		}catch(Error e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::NodoDibujoArray ERROR::2\n   Se ha produciodo un Error: "+e.toString());
		}
	}
	
	/**
	 * 
	 */
	private void dibujarPosicion() throws Exception,Error {
		_grafico.setColor(new Color (53,107,110));
		_grafico.drawString("[ "+_posicion+" ]", _posicionX, _posicionY-5);	
	}
	
	/**
	 * 
	 */
	private void crearCaja() throws Exception,Error {
		_grafico.setColor(Color.black);
		_grafico.drawRect(_posicionX, _posicionY, _anchoNodo, _altoNodo);
		
		if(_habilitado)
			_grafico.setColor(new Color (148,120,149));
		else
			_grafico.setColor(new Color (138,168,158));
	
		_grafico.fillRect(_posicionX+1, _posicionY+1, _anchoNodo-1, _altoNodo-1);
	}
	
	/**
	 * 
	 */
	private void crearDato() throws Exception,Error {
		_grafico.setColor(Color.black);
		if(_dato!=null)
			_grafico.drawString(_dato, _posicionX+(_anchoNodo/2), _posicionY+(_altoNodo/2)+5);
	}
	
	/**
	 * @return
	 */
	public int getPosicionX() throws Exception,Error {
		return _posicionX;
	}
	
	/**
	 * @param posicionX
	 */
	public void setPosicionX(int posicionX) {
		_posicionX = posicionX;
	}
	
	/**
	 * @return
	 */
	public int getPosicionY() {
		return _posicionY;
	}
	
	/**
	 * @param posicionY
	 */
	public void setPosicionY(int posicionY) {
		_posicionY = posicionY;
	}
	
	/**
	 * @return
	 */
	public int getAnchoNodo() {
		return _anchoNodo;
	}
	
	/**
	 * @return
	 */
	public int getAltoNodo() {
		return _altoNodo;
	}

	/**
	 * @return
	 */
	public String getDato() {
		return _dato;
	}

	/**
	 * @param posicion
	 */
	public void setPosicion(int posicion) {
		_posicion=posicion;
	}
	
	/**
	 * @param habilitado
	 */
	public void setHabilitado(boolean habilitado) {
		_habilitado=habilitado;
	}
}
